﻿using Credinka.Ayni.GEN.UTL;
using Credinka.Ayni.SEA.EN;
using Credinka.Ayni.SEA.RN;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Mail;
using System.Net.Mime;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Modulos_SEA_RegistrarAlerta : System.Web.UI.Page {
  rnDescripcion ornDescripcion;
  rnAlerta ornAlerta;
  enAlerta oenAlerta;
  enAlertaGrupo oenAlertaGrupo;
  rnAlertaGrupo ornAlertaGrupo;

  private List<enAlertaGrupo> loenAlertaUsuario;
  List<enGrupo> lstGrupo = new List<enGrupo>();
  string codigo = string.Empty;

  protected void Page_Load(object sender, EventArgs e) {
    codigo = Page.Request.QueryString.AllKeys.ToList().Count > 0 ? Page.Request.QueryString["codigo"].ToString() : string.Empty;

    if (!Page.IsPostBack) {
      CargarEstado();
      CargarTipoAlerta();

      if (!codigo.Equals(string.Empty)) {
        ObtenerAlerta();
      }
    } else {
      CargarDestinatarios();
    }
  }

  private void ObtenerAlerta() {
    ornAlerta = new rnAlerta();
    oenAlerta = new enAlerta();
    oenAlerta.IdAlerta = int.Parse(codigo);
    oenAlerta = ornAlerta.Obtener(oenAlerta);
    Session["DestinatarioBD"] = oenAlerta.lstAlertaGrupo;
    txtNombre.Value = oenAlerta.Nombre;
    txtAsunto.Value = oenAlerta.Asunto;
    txtDescripcion.Text = oenAlerta.Descripcion;
    txtMensaje.Text = oenAlerta.Mensaje;
    string destinatario = string.Empty;

    foreach (enAlertaGrupo item in oenAlerta.lstAlertaGrupo) {
      destinatario += item.NombreGrupo + ";";
    }
    txtDestinatario.Value = destinatario;
    ddlEstado.SelectedValue = oenAlerta.CodigoEstado.ToString();
    ddlTipoAlerta.SelectedValue = oenAlerta.CodigoTipoAlerta.ToString();
  }

  private void CargarDestinatarios() {
    lstGrupo = Session["ListaDestinatarios"] == null ? new List<enGrupo>() : (List<enGrupo>)Session["ListaDestinatarios"];
    string destinatario = string.Empty;

    foreach (enGrupo item in lstGrupo) {
      destinatario += item.Nombre + ";";
    }
    txtDestinatario.Value = destinatario;
  }

  private void CargarEstado() {
    ornDescripcion = new rnDescripcion();
    ddlEstado.DataSource = ornDescripcion.ListarEstado();
    ddlEstado.DataTextField = "Descripcion";
    ddlEstado.DataValueField = "CodigoElemento";
    ddlEstado.DataBind();
  }

  private void CargarTipoAlerta() {
    ornDescripcion = new rnDescripcion();
    ddlTipoAlerta.DataSource = ornDescripcion.ListarTipoAlerta();
    ddlTipoAlerta.DataTextField = "Descripcion";
    ddlTipoAlerta.DataValueField = "CodigoElemento";
    ddlTipoAlerta.DataBind();
  }

  protected void RegistrarAlerta() {
    ornAlerta = new rnAlerta();
    oenAlerta = new enAlerta();

    oenAlerta.Nombre = txtNombre.Value;
    oenAlerta.Descripcion = txtDescripcion.Text;
    oenAlerta.Asunto = txtAsunto.Value;
    oenAlerta.Mensaje = txtMensaje.Text;
    oenAlerta.CodigoEstado = Convert.ToInt32(ddlEstado.SelectedValue);
    oenAlerta.AudFechaCreacion = DateTime.Now;
    oenAlerta.CodigoTipoAlerta = Convert.ToInt32(ddlTipoAlerta.SelectedValue);
    oenAlerta.AudNombreUsuarioCreacion = utlAuditoria.ObtenerUsuarioDominio();
    oenAlerta.AudIPCreacion = utlAuditoria.ObtenerDireccionIP();
    oenAlerta.AudMacCreacion = utlAuditoria.ObtenerDireccionMAC();
    ornAlerta.Registrar(oenAlerta, lstGrupo);
  }

  protected void btnSi_Click(object sender, EventArgs e) {
    ornAlerta = new rnAlerta();
    oenAlerta = new enAlerta();

    oenAlerta.Nombre = txtNombre.Value;
    oenAlerta.Descripcion = txtDescripcion.Text;
    oenAlerta.Asunto = txtAsunto.Value;
    oenAlerta.Mensaje = txtMensaje.Text;
    oenAlerta.CodigoEstado = Convert.ToInt32(ddlEstado.SelectedValue);
    oenAlerta.CodigoTipoAlerta = Convert.ToInt32(ddlTipoAlerta.SelectedValue);

    if (codigo != String.Empty) {
      //ACTUALIZAR FORMULARIO
      oenAlerta.IdAlerta = int.Parse(codigo);
      oenAlerta.AudNombreUsuarioModificacion = utlAuditoria.ObtenerUsuarioDominio();
      oenAlerta.AudMacModificacion = utlAuditoria.ObtenerDireccionMAC();
      oenAlerta.AudIPModificacion = utlAuditoria.ObtenerDireccionIP();

      bool opc = ornAlerta.Modificar(oenAlerta);
      if (opc) {
        GuardarDestinatario(oenAlerta.IdAlerta);
        StringBuilder sb = new StringBuilder();
        sb.Append(@"<script language='javascript'>");
        sb.Append(@"var lbl =  AbrirModal('330', '210', true, false, '#confirmacion', false);");
        sb.Append(@"$('#confirmacion').css('display', 'block');");
        sb.Append(@"</script>");
        ClientScript.RegisterStartupScript(this.GetType(), "JSScript", sb.ToString());
      } else {
        dvAlerta2.InnerHtml = "El nombre del perfil ya se encuentra registrado en la base de datos.";
        fijo.Attributes.CssStyle.Add("height", "50px");
        dvAlerta2.Attributes.CssStyle.Add("display", "block");
      }
    } else {
      //INSERTAR FORMULARIO CON SUS RESPECTIVOS CAMPOS DE AUDITORIA
      oenAlerta.AudNombreUsuarioCreacion = utlAuditoria.ObtenerUsuarioDominio();
      oenAlerta.AudIPCreacion = utlAuditoria.ObtenerDireccionIP();
      oenAlerta.AudMacCreacion = utlAuditoria.ObtenerDireccionMAC();
      oenAlerta.AudFechaCreacion = DateTime.Now;
      int idAlerta = ornAlerta.Registrar(oenAlerta, lstGrupo);

      if (idAlerta != 0) {
        StringBuilder sb = new StringBuilder();
        sb.Append(@"<script language='javascript'>");
        sb.Append(@"var lbl =  AbrirModal('330', '210', true, false, '#confirmacion', true);");
        sb.Append(@"$('#confirmacion').css('display', 'block');");
        sb.Append(@"</script>");
        ClientScript.RegisterStartupScript(this.GetType(), "JSScript", sb.ToString());
      } else {
        dvAlerta2.InnerHtml = "El nombre de la alerta ya se encuentra registrada en la base de datos.";
        fijo.Attributes.CssStyle.Add("height", "50px");
        dvAlerta2.Attributes.CssStyle.Add("display", "block");
      }
    }
  }

  private void GuardarDestinatario(int codigo) {
    ornAlertaGrupo = new rnAlertaGrupo();
    oenAlertaGrupo = new enAlertaGrupo();
    loenAlertaUsuario = (List<enAlertaGrupo>)Session["DestinatarioBD"] == null ? new List<enAlertaGrupo>() : (List<enAlertaGrupo>)Session["DestinatarioBD"];

    oenAlertaGrupo.IdAlerta = codigo;
    oenAlertaGrupo.CodigoEstado = Convert.ToInt32(utlEnumerado.Estado.Activo);

    foreach (enAlertaGrupo item in loenAlertaUsuario) {

        var newList = lstGrupo.FindAll(s => s.IdGrupo == item.IdGrupo);
        if (newList.Count == 0) {
          oenAlertaGrupo.IdGrupo = item.IdGrupo;
          oenAlertaGrupo.IdAlerta = codigo;
          oenAlertaGrupo.AudNombreUsuarioCreacion = utlAuditoria.ObtenerUsuarioDominio();
          oenAlertaGrupo.AudIPCreacion = utlAuditoria.ObtenerDireccionIP();
          oenAlertaGrupo.AudMacCreacion = utlAuditoria.ObtenerDireccionMAC();
          oenAlertaGrupo.udFechaCreacion = DateTime.Now;
          //oenAlertaGrupo.Registrar(oenFormularioObjeto);
        }
      else {
        var newList2 = lstGrupo.FindAll(s => s.IdGrupo != item.IdGrupo);
      //  foreach (var itemNew in newList) {
      //    oenFormularioObjeto.IdFormularioObjeto = itemNew.IdFormularioObjeto;
      //    oenFormularioObjeto.IdAlerta = idAlerta;
      //    oenFormularioObjeto.AudMacModificacion = utlAuditoria.ObtenerDireccionMAC();
      //    oenFormularioObjeto.AudNombreUsuarioModificacion = utlAuditoria.ObtenerUsuarioDominio();
      //    oenFormularioObjeto.AudIPModificacion = utlAuditoria.ObtenerDireccionIP();
      //    ornFormularioObjeto.Eliminar(oenFormularioObjeto);
      //  }
      }
    }
  }
}